import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 设置 seaborn 主题
sns.set_theme(style="whitegrid")

# 设置中文字体 必须在set_theme之后
# 设置无衬线字体的优先级列表
# PingFang HK：苹果系统的中文字体
# Hiragino Sans GB：Mac系统的中文字体
# STHeiti：华文黑体，Windows和Mac都有
# Arial Unicode MS：支持Unicode的Arial字体
# matplotlib会按顺序尝试使用这些字体，找到第一个可用的就使用
plt.rcParams['font.sans-serif'] = ['PingFang HK', 'Hiragino Sans GB', 'STHeiti', 'Arial Unicode MS']

# 解决中文字体环境下负号显示为方块的问题
# 设置为False让matplotlib使用ASCII的减号而不是Unicode减号1
plt.rcParams['axes.unicode_minus'] = False

# 指定使用无衬线字体族
# 配合第一行设置的字体列表使用
plt.rcParams['font.family'] = 'sans-serif'

np.random.seed(42)
n = 200
# 构造模拟数据
data = pd.DataFrame({
    '身高': np.random.normal(170, 10, n),             # 身高（均值170，标准差10）
    '体重(kg)': np.random.normal(65, 12, n),          # 体重（均值65，标准差12）
    '年龄': np.random.randint(20, 60, n),              # 年龄（20~59之间的整数）
    '性别': np.random.choice(['男', '女'], n),         # 性别（男/女随机分配）
    '运动频率': np.random.choice(['低', '中', '高'], n)  # 运动频率（低/中/高随机分配）
})

